#ifndef GAMEMODEL_H
#define GAMEMODEL_H

#include <vector>

//游戏类型
enum GameType{
    MAN,//双人模式
    AI  //人机对战模式
};
//游戏状态
enum GameStatus{
    PLAYING,//游戏中
    WIN,//已经赢了
    DEAD//输了

};

//棋盘尺寸
const int BOARD_GRAD_SIZE = 20;
const int MARGIN = 30; //期盼边缘空隙
const int CHESS_RADIUS = 18; //棋子半径
const int MARK_SIZE = 8; //落子标记边长
const int BLOCK_SIZE = 45; //格子大小
const int POS_OFFSET = BLOCK_SIZE*0.25; //鼠标点击的模糊距离上限

const int AI_THINK_TIME = 1000; //AI下棋思考时间

class GameModel{
public:
    GameModel();
public:
    //储存当前游戏棋盘和棋子的情況，空白为0，黑子（小狗）1，白子（小猫）-1
    std::vector<std::vector<int>> gameMapVec;//是一个容器

    //存储各个点位的评分情況，作为AI下棋依据
    std::vector<std::vector<int>> scoreMapVec;//也是一个容器

    //表示下棋的一方，true黑，false白
    bool playerFlag;//

    GameType gameType; //游戏模式：人机对弈，还是双人模式

    GameStatus gameStatus; //游戏状态

    void startGame(GameType type);//开始游戏
    void actionByPerson(int row, int col);//人执行下棋
    void actionByAI(int &clickRow,int &clickCol); //AI执行下棋
    void updateGameMap(int row, int col);//每次落子后更新游戏棋盘
    bool isWin(int row,int col);//判断游戏是否胜利
    bool isDeadGame();//判断是否和棋
    void calculateScore(); //计算评分


};
#endif // GAMEMODEL_H